#include <iostream>

#include "iostream"
#include "vector"
#include "unordered_map"
#include "unordered_set"
#include "algorithm"
#include "string"
#include "list"
#include "string.h"

//有容量为c的背包要装入体积为1~n的物品，每种物品各一个，求恰好将背包装满的方案数。

// Bo[i][j]
// ### i表示可从1-i范围内选，j表示背包的容量为j。
// 在这样的情况下的方案数

//Bo[i][j]=Bo[i-1][j]                i>j   (第i个比容量大了，必然装不下，所以等于从0~(i-1)往j装
//Bo[i][j]=Bo[i-1][j]+Bo[i-1][j-i]   i<=j  第i个小于等于容量，意味着i有机会装入
//                                            先考虑装入i
//                                                j-i即为装入i后剩余空间
//                                                从0~i-1里往剩余空间内装
//                                            然后考虑不装入i
//                                                那么就是从0~i往j空间装

//相关
//#include "dhjj/_90.h"

class OneLoop {
public:
//    体积1~n,容量为c
    std::vector<std::vector<int>> dp2;
    bool run(int n,int c) {
        int max=0;
        std::vector<int> line(c+1);
        for(int i=0;i<=n;i++){
            dp2.push_back(line);
        }
        for(int i=1;i<=n;i++){
            for(int j=1;j<=c;j++){
                if(i==1){
                    //可选体积为1
                    if(j==1){//容量为1
                        dp2[i][j]=1;
                    }else{//容量大于1，不能恰好装满
                        dp2[i][j]=0;
                    }
                }else{
                    if(i>j){
                        dp2[i][j]=dp2[i-1][j];
                    }else{
                        dp2[i][j]=dp2[i-1][j]+dp2[i-1][j-i];
                    }
                }
                if(dp2[i][j]>max){
                    max=dp2[i][j];
                }
            }
        }
        return true;
    }
};

class Solution {
public:
    void run() {

        bool first = true;
        int64_t a, b, c, d, e;
        char cc;
        //        std::cin >> a;
//        std::string s1,s2;
//        while (1){
        while (
                std::cin>>a>>b
//                std::getline(std::cin,s1)
//                1
                ) {
//            std::getline(std::cin,s2);
            OneLoop l;
            if (!l.run(a,b)) {
//                return;
            }
        }


    }
};

int main() {

    //    bool cur_num= true;
    Solution().run();
    return 0;
}

